package com.gitee.dolt.boot.controller;


import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ClassUtil;
import com.gitee.dolt.boot.service.SuperService;
import com.gitee.dolt.core.base.entity.Entity;
import com.gitee.dolt.core.base.entity.SuperEntity;
import com.gitee.dolt.utils.BeanUtils;

/**
 * 基础接口
 *
 * @author LYH
 */
public interface BaseController<Entity> {
    /**
     * 获取实体的类型
     *
     * @return 实体的类型
     */
    Class<Entity> getEntityClass();

    /**
     * 获取Service
     *
     * @return Service
     */
    SuperService<Entity> getBaseService();

    /**
     * bean转换
     *
     * @param source
     * @return
     */
    default Entity toBean(Object source) {
        return BeanUtils.toBeanIgnoreError(source, getEntityClass());
    }

    /**
     * 设置一些空值
     *
     * @param entity
     */
    default void setNullValue(Object entity) {
        if (entity instanceof com.gitee.dolt.core.base.entity.Entity) {
            ((com.gitee.dolt.core.base.entity.Entity) entity).setUpdatedBy(null).setUpdateTime(null);
        }
        if (entity instanceof SuperEntity) {
            ((SuperEntity) entity).setCreatedBy(null).setCreateTime(null);
        }
    }

}
